/**
 * ClientFactory.java<br>
 *
 *
 * @version 下午10:02:34
 */
package com.iwechat.service;

/**
 * 客户端配置工厂
 *
 *
 */
public interface ClientFactory {

    /**
     * 获得配置：每个客户端最大连接数
     *
     *
     * @param clientId
     * @return default 0
     */
    int getMaxConnByClientId(String clientId);

    /**
     * 获得配置：滑动窗口大小
     *
     *
     * @param clientId
     * @return default 0
     */
    int getWindowByClientId(String clientId);

    /**
     * 获得配置：客户端公钥
     *
     *
     * @param clientId
     * @return default ""
     */
    String getPublicStringByClientId(String clientId);

    /**
     * 检查IP是否在白名单
     *
     *
     * @param ip
     *            合法的ip格式 如 192.168.1.1
     * @return
     */
    boolean checkIP(String ip);

    /**
     * 判断一个ip是否在某个网段内<br>
     * 仅支持IPV4,且输入必须为合法地址,否则校验失败
     *
     *
     * @param ip
     *            合法的ip地址格式 如 192.168.1.1
     * @param cidr
     *            合法的网段格式 如 192.168.0.0/16
     * @return
     */
    public boolean isInRange(String ip, String cidr);
}
